#include "TestLabel.h"
#include<QLabel>
#include<QVBoxLayout>
#include<QMovie>
#include<QDesktopServices>
#include<QUrl>
#include<QLineEdit>

TestLabel::TestLabel(QWidget *parent) : QWidget(parent)
{
    //1 当标签,显示简单文本
    QLabel *label1 =new QLabel(this);
    label1->setText("usename");
    label1->setAlignment(Qt::AlignCenter);

    //2 显示富文本（HTML）
    QLabel *label2=new QLabel(this);
    label2->setText("<b>Bold</b> and <i>italic</i> text");

    //3 显示图像
    QLabel *label3=new QLabel(this);
    label3->setFixedSize(80,80);
    QPixmap pixmap(":/images/logo.png");
    label3->setPixmap(pixmap);
    label3->setScaledContents(true);    // 缩放图像以适应标签
    QPixmap scaled = pixmap.scaled(label3->size(),
                                  Qt::KeepAspectRatio,
                                  Qt::SmoothTransformation); // 保持宽高比
    label3->setPixmap(scaled);

    //4 显示 GIF 动画
    QLabel *label4 =new QLabel(this);
    QMovie *movie = new QMovie(":/animations/loading.gif");
    label4->setMovie(movie);
    movie->start();

    //5 启用超链接
    QLabel *label5 =new QLabel(this);
    label5->setText("<a href='https://www.qt.io'>Visit Qt Website</a>");
    label5->setOpenExternalLinks(true);
    // 自定义链接处理
    /*connect(label5, &QLabel::linkActivated, [](const QString &link) {
        QDesktopServices::openUrl(QUrl(link));
    });*/

    //6 快捷键助记符功能
    QLineEdit *nameEdit = new QLineEdit(this);
    QLineEdit *nameEdit2 = new QLineEdit(this);
    QLabel *label6 = new QLabel("&Name:", this);
    label6->setBuddy(nameEdit); // 为输入框设置快捷键助记符 Alt+N 将聚焦到 nameEdit

    //7 允许用户选择和复制文本
    QLabel *label7 = new QLabel(this);
    label7->setTextInteractionFlags(Qt::TextSelectableByMouse);
    label7->setText("Selectable text: 123-456-7890");

    //8 文本对齐方式
    QLabel *label8 = new QLabel(this);
    label8->setText("Qt::AlignCenter");
    label8->setAlignment(Qt::AlignCenter);

    //9 富文本对齐
    //使用 HTML 可以更精细地控制文本对齐：
    QLabel *label9 = new QLabel(this);
    label9->setText(
        "<h1 align='center'>Centered Heading</h1>"
        "<p align='right'>Right-aligned paragraph</p>"
        "<div style='text-align: justify;'>Justified text that wraps to multiple lines...</div>"
    );

    //10 图像对齐方式
    QPixmap pixmap_10(":/images/logo.png");
    QLabel *label10 = new QLabel;
    label10->setPixmap(pixmap_10);
    label10->setFrameStyle(QFrame::Box);
    label10->setAlignment(Qt::AlignCenter);

    //11 文本自动换行
    QLabel *label11 = new QLabel;
    label11->setText("This is a long text that will wrap to multiple lines");
    label11->setWordWrap(true); // 启用自动换行
    label11->setAlignment(Qt::AlignTop | Qt::AlignLeft); // 左上对齐多行文本

    QVBoxLayout *vlayout =new QVBoxLayout(this);
    vlayout->addWidget(label1);
    vlayout->addWidget(label2);
    vlayout->addWidget(label3);
    vlayout->addWidget(label4);
    vlayout->addWidget(label5);
    vlayout->addWidget(nameEdit);
    vlayout->addWidget(nameEdit2);
    vlayout->addWidget(label6);
    vlayout->addWidget(label7);
    vlayout->addWidget(label8);
    vlayout->addWidget(label9);
    vlayout->addWidget(label10);
    vlayout->addWidget(label11);


}
